package com.suning.sawp.member.dao;

import java.util.List;
import java.util.Map;

import com.suning.sawp.member.dto.Label;
import com.suning.sawp.member.dto.MemLabelRel;
import com.suning.sawp.member.vo.CustLabelVo;
import com.suning.sawp.member.vo.LabelVo;

/**
 * 
 * 标签dao<br>
 *
 * @author 14060886 祝翔龙
 */
public interface LabelDao {

	/**
	 * 
	 * 功能描述: 查询标签列表<br>
	 *
	 * @param params
	 * @return
	 */
	List<LabelVo> selectLabelList(Map<String, Object> params);

	/**
	 * 
	 * 功能描述: 查询标签列表<br>
	 *
	 * @param params
	 * @return
	 */
	Integer countLabelList(Map<String, Object> params);

	/**
	 * 
	 * 功能描述: 查询标签信息<br>
	 *
	 * @param params
	 * @return
	 */
	LabelVo selectLabelInfo(Map<String, Object> params);

	/**
	 * 
	 * 功能描述: 保存标签<br>
	 *
	 * @param label
	 */
	void saveLabel(Label label);

	/**
	 * 
	 * 功能描述: 更新标签<br>
	 *
	 * @param label
	 */
	void updateLabel(Label label);

	/**
	 * 
	 * 功能描述: 批量保存标签<br>
	 *
	 * @param labelList
	 */
	void batchSaveLabel(List<Label> labelList);

	/**
	 * 
	 * 功能描述: 删除标签<br>
	 *
	 * @param params
	 */
	void deleteLabelById(Map<String, Object> params);

	/**
	 * 
	 * 功能描述: 删除标签<br>
	 *
	 * @param params
	 */
	void deleteLabelByParentId(Map<String, Object> params);

	/**
	 * 
	 * 功能描述: 查询子标签列表<br>
	 *
	 * @param params
	 * @return
	 */
	List<LabelVo> selectSubLabelList(Map<String, Object> params);

	/**
	 * 
	 * 查询所有的标签集合
	 * 
	 * "0", "全渠道";"1", "店+";"2", "POS"
	 *
	 * @return
	 */
	List<Label> queryAllLabel(String channelCode);

	/**
	 * 
	 * 根据会员编码，查询和标签的关联关系
	 *
	 * @param custNo
	 */
	List<MemLabelRel> queryMemberLabelInfo(String custNo);

	/**
	 * 
	 * 功能描述: 根据客户查询标签列表<br>
	 *
	 * @param custId
	 * @return
	 */
	List<CustLabelVo> selectLabelByCust(String custId);

	/**
	 * 批量保存会员标签关系
	 */
	public boolean batchSaveMemLabelRel(List<MemLabelRel> list);

	/**
	 * 
	 * 根据custId删除关联的会员标签
	 *
	 * @param custId
	 */
	public void delMemLabelRelByCustId(Long custId);

	/**
	 * 根据custId查询关联的标签信息，最多查询5个，必填->选填->删除的
	 */
	public List<CustLabelVo> queryFiveLabelByCustId(Long custId);

}
